package com.pig4cloud.pigx.common.customize.thread.handler;

import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * 通用线程池拒绝执行处理器
 *
 * @since 2022/9/27 19:47
 */
public class CommonRejectedExecutionHandler implements RejectedExecutionHandler {
	/**
	 * Method that may be invoked by a {@link ThreadPoolExecutor} when
	 * {@link ThreadPoolExecutor#execute execute} cannot accept a
	 * task.  This may occur when no more threads or queue slots are
	 * available because their bounds would be exceeded, or upon
	 * shutdown of the Executor.
	 *
	 * <p>In the absence of other alternatives, the method may throw
	 * an unchecked {@link RejectedExecutionException}, which will be
	 * propagated to the caller of {@code execute}.
	 *
	 * @param r        the runnable task requested to be executed
	 * @param executor the executor attempting to execute this task
	 * @throws RejectedExecutionException if there is no remedy
	 */
	@Override
	public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
		System.err.println("被拒绝执行的线程：" + r.getClass().getName());
	}
}
